home *** CD-ROM | disk | FTP | other *** search
/ PC World 2006 December / PCWorld_2006-12_cd.bin / v cisle / pcw / pcw1-1.v06.exe / pcw1-1.v06.bat
DOS Batch File  |  2006-10-20  |  5KB  |  176 lines

  1. @echo off
  2. title pcw1-1.V06 (Mirror-Batch)
  3. set zquelle=%1
  4. set zkopie=%2
  5. set zmodus=%3
  6. FOR %%A in (0 1 2 9) DO IF (%%A)==(%zmodus%) set zbatch=1
  7. if (%zbatch%)==() set zmodus=
  8. set ztmp=
  9. set ZAN=
  10. set zf=0
  11.  
  12. doskey a= > NUL
  13. doskey n= > NUL
  14. doskey 0= > NUL
  15. doskey 1= > NUL
  16. doskey 2= > NUL
  17. color F1
  18. cls
  19. mode con cols=120
  20. echo.
  21. echo  ╔═══════════════════════════════════════╗
  22. echo  ║Porovnani souboru pomoci pcw1-1.v06.BAT║ 
  23. echo  ╚═══════════════════════════════════════╝   
  24. echo.    
  25.  
  26. REM Input Source Folder --------------------------------------------------
  27. :Zdroj
  28. if (%zquelle%)==() SET /P zquelle=  Zdrojova slozka: 
  29. set zquelle=%zquelle:"=%
  30. if %errorlevel% EQU 9009 (
  31.     Echo.
  32.     Echo   Pricina chyby:
  33.     Echo   Slozka na nejvyssi urovni nesmi obsahovat znak "&".
  34.     Echo.
  35.     goto OVER
  36. )
  37. if %zquelle:~-1%==\ set zquelle=%zquelle:~0,-1%
  38. if NOT exist "%zquelle%" (
  39. echo.
  40. echo   CHYBA: Tato zdrojova slozka neexistuje...
  41. set zquelle=
  42. set zbatch=
  43. GOTO Quelle
  44. )
  45.  
  46. REM Input Copy Folder ----------------------------------------------------
  47. if (%zkopie%)==() SET /P zkopie=  Cilova slozka:  
  48. set zkopie=%zkopie:"=%
  49. if %errorlevel% EQU 9009 (
  50.     Echo.
  51.     Echo   Pricina chyby:
  52.     Echo   Slozka na nejvyssi urovni nesmi obsahovat znak "&".
  53.     Echo.
  54.     goto OVER
  55. )
  56. if %zkopie:~-1%==\ set zkopie=%zkopie:~0,-1%
  57. if exist "%zkopie%" goto Modus
  58. echo. && echo   POZOR: "%zkopie%" neni k dispozici. && Echo.
  59. set zbatch=
  60. set /P zan=  Vytvorit novou? [a-n]: 
  61. if /i NOT (%zan%)==(a) Goto OVER
  62. md "%zkopie%"
  63. set zmodus=1
  64. if not exist "%zkopie%" goto OVER
  65.  
  66. REM Input Mode -----------------------------------------------------------
  67. :Modus
  68. if NOT (%zmodus%)==() goto ModeDone
  69. echo.
  70. echo   [0] Odstranit: Odstrani v cilove slozce VSECHNY prebytecne slozky a soubory.
  71. echo   [1] Kopirovat: Doplni vsechny soubory, ktere v cilove slozce chybi nebo nahradi starsi verze souboru novejsimi.
  72. echo   [2] Odstranit + Kopirovat: Provede vsechny akce uvedene v bodech [0 a 1].
  73. echo   [9] Odstranit + Kopirovat: Simulace pro ucely testovani.
  74. echo.
  75. SET /P zmodus=  Vyberte si nekterou z polozek [0, 1, 2 nebo 9]: 
  76.  
  77. :ModeDone
  78. If NOT (%zmodus%)==(0) If NOT (%zmodus%)==(1) If NOT (%zmodus%)==(2) If NOT (%zmodus%)==(9) (
  79.   set zmodus=
  80.   echo   CHYBA: %zmodus% neni platny. Vyberte [0, 1, 2 nebo 9]. 
  81.   goto Modus
  82. )
  83.  
  84. echo.
  85. echo   ZDROJ:  %zquelle%
  86. echo   CIL:    %zkopie%
  87.  
  88. if %zmodus% EQU 0 echo   Rezim0:  Pouze odstraneni ze slozky %zkopie%
  89. if %zmodus% EQU 1 echo   Rezim1:  Pouze kopirovani do %zkopie%
  90. if %zmodus% EQU 2 echo   Rezim2:  Kopirovani + odstranovani ze slozky %zkopie%
  91. if %zmodus% EQU 9 echo   Rezim9:  Simulace kopirovani + odstranovani ze slozky %zkopie%
  92. echo.
  93.  
  94. set zan=
  95. if NOT (%zbatch%)==(1) SET /P zan=  Jsou zadane parametry v poradku? [a-n]: 
  96. if NOT (%zbatch%)==(1) if /i NOT %zan%.==a. Goto OVER
  97.  
  98. REM Copy Machine ---------------------------------------------------------
  99. echo. && echo   COPY ------------------------------------------------------------- && echo.
  100. if %zmodus% EQU 1 xcopy.exe /f /r /i /s /c /h /d /y "%zquelle%\*.*" "%zkopie%"
  101. if %zmodus% EQU 2 xcopy.exe /f /r /i /s /c /h /d /y "%zquelle%\*.*" "%zkopie%"
  102. if %zmodus% EQU 9 xcopy.exe /f /r /i /s /c /h /d /y /l "%zquelle%\*.*" "%zkopie%"
  103. if %zmodus% EQU 1 goto OVER
  104.  
  105. REM Kill Machine ---------------------------------------------------------
  106. color 0A
  107. echo.
  108. echo. && echo   KILL ------------------------------------------------------------- && echo.
  109. echo. && echo   Vyhledavam prebytecne slozky... && echo.
  110. dir /S /B /AD "%zkopie%\*.*" > %temp%\pcw1-1.tmp
  111. for /f "Delims=" %%N in (%temp%\pcw1-1.tmp) DO call :DirKill "%%N"
  112.  
  113. echo. && echo   Vyhledavam prebytecne soubory... && echo.
  114. dir /S /B /A-D "%zkopie%\*.*" > %temp%\pcw1-1.tmp
  115. for /f "Delims=" %%N in (%temp%\pcw1-1.tmp) DO call :FileKill "%%N"
  116.  
  117. color F1
  118. echo.
  119. echo  ╔═══════════════════════════════════════╗
  120. echo  ║Porovnani souboru pomoci pcw1-1.v06.BAT║ 
  121. echo  ╚═══════════════════════════════════════╝   
  122. echo.
  123. echo   Zdrojova slozka: %zquelle%
  124. echo   Cilova slozka:  %zkopie% 
  125. if %zmodus% NEQ 9 echo   %zd% slozek
  126. if %zmodus% NEQ 9 echo   %zf% souboru
  127. if %zmodus% EQU 9 echo    Simulace - nekopiruji se ani neodstranuji zadne soubory.
  128. echo.
  129. goto OVER
  130.  
  131. :DirKill
  132.     set ztmp=%*
  133.     call set quelle=%%ztmp:%zkopie%=%zquelle%%%
  134.     if not exist %quelle% (
  135.         if exist %ztmp% (
  136.             if %zmodus% NEQ 9 RD /s /q %ztmp%
  137.             echo ╔══ %ztmp%
  138.             echo ╚═════ KILLED...
  139.             ping -n 1 localhost > NUL
  140.         )
  141.     ) ELSE (
  142.         echo OK  %ztmp%
  143.         set /a zd=zd+1
  144.     )
  145.     goto Dummy
  146.  
  147. :FileKill
  148.     set ztmp=%*
  149.     call set quelle=%%ztmp:%zkopie%=%zquelle%%%
  150.     if not exist %quelle% (
  151.             if %zmodus% NEQ 9 DEL /F /A %ztmp% 
  152.                 echo ╔══ %ztmp%
  153.                 echo ╚═════ KILLED...
  154.                 ping -n 1 localhost > NUL
  155.     ) ELSE (
  156.         echo OK  %ztmp%
  157.         set /a zf=zf+1
  158.     )
  159.     goto Dummy
  160.  
  161. REM Clean Up -------------------------------------------------------------
  162. :OVER
  163. if exist %temp%\pcw1-1.tmp del /F /A %temp%\pcw1-1.tmp
  164. set zmodus=
  165. set ZAN=
  166. set zquelle=
  167. set zkopie=
  168. set zbatch=
  169. set ztmp=
  170. set zf=
  171. set zd=
  172. set quelle=
  173. pause
  174.  
  175. :DUMMY
  176.